package org.posupe.empresas;

import org.posupe.pessoas.PessoaFisica;
import org.posupe.pessoas.PessoaJuridica;
import org.posupe.util.Endereco;

/**
 * @author Marcio Calado
 */
public class Empresa extends PessoaJuridica {

	private String sigla;

	private PessoaFisica responsavelRH;

	public Empresa(String cnpj, String razaoSocial, String nomeFantasia,
			String sigla, Endereco endereco, PessoaFisica responsavelRH,
			String telefone, String fax, String email) {
		super(cnpj, razaoSocial, nomeFantasia, telefone, fax, email, endereco);

		this.sigla = sigla;

		this.responsavelRH = responsavelRH;

	}

	public Empresa(String cnpj) {
		this(cnpj, null, null, null, null, null, null, null, null);
	}

	public PessoaFisica getResponsavelRH() {
		return responsavelRH;
	}

	public String getSigla() {
		return sigla;
	}

	public boolean match(Empresa empresa) {
		boolean retorno = true;
		
		if((empresa != null)
				&& (empresa.getCodigo() != null || empresa.getEmail() != null 
				|| empresa.getEndereco() != null || empresa.getFax() != null 
				|| empresa.getNome() != null || empresa.getNomeFantasia() != null 
				|| empresa.getTelefone() != null)
				&& (this.getCodigo() != null || this.getEmail() != null 
				|| this.getFax() != null || this.getEndereco() != null
				|| this.getNome() != null || this.getNomeFantasia() != null
				|| this.getTelefone() != null)){
			retorno = super.match(empresa);
		}
		
		if((empresa == null)){
			retorno = false;
		}
		
		if (retorno && empresa.sigla != null && this.sigla != null) {
			if (!this.sigla.contains(empresa.sigla)) {
				retorno = false;
			}
		}

		if (retorno && empresa.responsavelRH != null && this.responsavelRH != null) {
			if (!this.responsavelRH.match(empresa.responsavelRH)) {
				retorno = false;
			}
		}

		return retorno;
	}

	public void setResponsavelRH(PessoaFisica responsavelRH) {
		this.responsavelRH = responsavelRH;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public String toString() {
		String r = " "; 
			r = (this.getCodigo()==null?" ":this.getCodigo())+ " : " 
			+ (this.getNome()==null?" ":this.getNome())+ " - "
			+ (this.getNomeFantasia()==null?" ":this.getNomeFantasia() )+ " - "
			+ (this.getSigla()==null?" ":this.getSigla());
		return r.trim();
	}
}
